package org.wsff.tools.api.gateway.manager;

import java.io.Serializable;

import org.wsff.tools.api.gateway.core.ProxyFilter;
import org.wsff.tools.api.gateway.core.ProxyValidator;

/**
 * ProxyInvoker 管理者
 *
 * @author ryan
 * @version Id: ProxyManager.java, v 0.1 2022-01-18 18:25 ryan Exp $$
 */
public interface ProxyManager<Request extends Serializable, Response extends Serializable> extends Lifecycle {

    /**
     * 获取代理服务实例
     *
     * @param name 服务名称
     * @return 服务实例
     */
    ProxyWrapper<Request, Response> getInvoker(String name);

    /**
     * 获取代理服务过滤器实例
     *
     * @param name proxy name
     * @param type filter type
     * @return 过滤器实例
     */
    ProxyFilter<Request, Response> getFilterByType(String name, String type);

    /**
     * 获取代理服务校验器实例
     *
     * @param name proxy name
     * @return 校验器实例
     */
    ProxyValidator<Request> getValidator(String name);
}
